CHAD2 QA Hub

ABC Programs & Services Module

Testing playbook for specialty programs, National syncs, and member engagement features — AQC, STEP, Beam Club, Start-Up Contractor, 15-for-12, Affinity Discount, and Find-a-Contractor.

The Business

Programs & Services is a cross-cutting collection of specialty programs that sit on top of the core membership system. Unlike a single feature module, P&S bundles multiple independent but complementary programs.

📋What Is Programs & Services?

Programs & Services is not a monolithic module—it's an ecosystem of specialty programs designed to increase member engagement, support contractor development, improve safety, and strengthen community. Each program operates with its own business logic, integrations, and data flows, but they all share the same UI presence within the AMS.

The seven programs are:

  • AQC (Accredited Quality Contractor): Annual national certification recognizing quality contractors
  • STEP (Safety Training Evaluation Process): Safety certification tracked nationally, with annual evaluation cycles
  • Beam Club: Points-based recognition program for sponsor contribution; members progress through achievement levels
  • Start-Up Contractor: Discounted dues structure for new contractors (being phased out but still supported)
  • 15-for-12: Seasonal join offer: join in Oct/Nov/Dec, get 15/14/13 months for the price of 12
  • Affinity Discount: Discount programs administered through affiliated organizations
  • Find-a-Contractor: Directory sync from FindContractors.com to AMS company profiles

🎯Why These Programs Matter

Member Engagement & Retention: Programs & Services keep members engaged between renewal cycles. AQC and STEP offer recognition; Beam Club provides ongoing achievement targets; start-up discounts reduce friction for new members.

Chapter Operations: Chapters use P&S programs to support local initiatives. STEP reporting helps chapters identify safety leaders. Beam Club sponsor recognition strengthens company culture. Start-Up Contractor and 15-for-12 are powerful recruitment tools.

National Syncs & Data Quality: AQC and STEP data originate from National systems and sync into local AMS instances. This creates a critical testing surface: how do we handle read-only national data, yearly cycles, and discrepancies between local and national state?

Revenue & Billing Impact: Start-Up Contractor and 15-for-12 directly affect dues invoicing. A bug in these programs cascades into billing errors and chapter revenue loss.

Program Interdependencies

While each program is largely independent, some interactions exist:

  • Beam Club & Company Status: Points only accrue when the company is active and has a paid invoice. Archiving a sponsor retroactively doesn't erase their points.
  • STEP & Member Eligibility: Only active individual members (not category 1 associates) can earn STEP levels. This couples STEP to the membership classification system.
  • Start-Up Contractor & Year-Over-Year Dues: Year 3 hybrid rate triggers if member joined Feb-Dec; affects invoice generation in the following year.
  • 15-for-12 & Auto $0 Invoices: When a member joins Oct/Nov/Dec under 15-for-12, the system auto-generates a $0 invoice for Jan 1 of the following year (to shift renewal to Dec 31).

How It Works

Technical flow and data syncs for each program. Understanding how data moves—from National to local, from UI to database, through invoice generation—is essential for test coverage.

AQC: Accredited Quality Contractor

AQC data comes from National. Local chapters receive a flat data file or webhook notification with accreditation status.

Data Flow:

National SQL → Webhook/API → AMS Local DB → Company AQC record (read-only flag) → Badge display on Portal (current year only) → Admin "Apply for AQC" link (if not accredited)

Key Details:

  • Accreditation is yearly (1/1 - 12/31 calendar year)
  • Badge displays only for current year accreditation
  • If member is not AQC: "No AQC history" message, with link to apply
  • Data is read-only locally — edits happen at National, sync back to local
QA Testing Edge Challenge: Test what happens when sync fails mid-year. Does the portal show stale data? Does the admin notification fire?
STEP: Safety Training Evaluation Process

STEP is National data with local reporting. Data syncs in bulk, chapter can generate multiple export reports.

Data Sync:

National SQL → STEP Export (bulk JSON/CSV) → AMS STEP_Records table (read-only) → 5 data points per record: - Year (YYYY) - Level (Bronze/Silver/Gold/Platinum/Diamond) - Date Submitted (submission date) - Status (Submitted/Verified/Rejected) - Date Verified (when National reviewed)

Reporting & Exports: Chapters can export STEP data in two formats:

  • STEP Export: All members with STEP certification
  • No STEP Export: All members without STEP

Eligibility & Badge Logic:

  • Only active individual members are eligible (category 1 associates are NOT)
  • Badge shows the highest verified level across all years
  • Type Disc field = STEP_inconsistent_with_dues (tracks data quality issues)
QA Testing Edge Challenge: Bulk sync performance. Test export with 5000+ STEP records. Does the report timeout? Are filtered exports (by level, year) accurate?
Beam Club: Points & Sponsorship

Beam Club is the most complex program: points accrue based on sponsors, levels are auto-awarded, prior points can be added manually.

Sponsor & Points Rules:

  • Company can have up to 2 sponsors
  • 1 sponsor = 1.0 point per year; 2 sponsors = 0.5 points each
  • Points only accrue when: company is active + has a paid invoice + sponsor is designated
  • Points are permanent—no year-end resets

Award Levels (Hard-Coded):

5 points → Beam Club 10 points → Merit 15 points → Merit Plus 25 points → Presidential 50 points → Hall of Fame 100 points → Chair

Level Assignment: Sponsor must be active individual at active company when they reach new level. Archived sponsors retain their points (no retroactive reduction).

Portal vs Admin: Chapter interface (admin) shows "Fulfill T-shirt," manage prior points. Portal (member-facing) shows sponsor name, level achievement, and Fulfillment Status (NULL/Ordered/Fulfilled).

QA Testing Edge Challenge: Test sponsor archival mid-point accrual. If a sponsor hits a level, then gets archived, do points remain? Can we manually add prior points for historical sponsors?
Start-Up Contractor: Phased Out, Still Supported

Start-Up Contractor provides a discounted dues rate for new contractors in their first two (or three) years of membership. This program is being sunset but remains active.

Discount Structure:

  • Year 1: Discounted rate (e.g., 50% of full dues)
  • Year 2: Discounted rate (e.g., 75% of full dues)
  • Year 3: Hybrid calculation—IF joined in Feb-Dec, apply a different rate; if joined Jan, full rate

Toggle Per Chapter: Chapters can enable/disable Start-Up Contractor pricing. When disabled, new contractors are invoiced at full rate.

Invoicing Impact: The rate selection happens during invoice generation. A bug in year-over-year tracking can cause incorrect invoices in Year 3.

QA Testing Edge Challenge: Test Year 3 hybrid rate. Join contractor on Feb 1 (Year 1). In Year 2, invoice at discounted rate. In Year 3, does system correctly identify hybrid vs full rate? What if join date was Jan 1?
15-for-12: Seasonal Join Offer

15-for-12 is a seasonal promotion: join in Oct/Nov/Dec, get 15/14/13 months of membership for the price of 12. The system auto-generates a $0 invoice to shift the renewal date.

How It Works:

Member joins Oct → Membership spans Oct–Dec + Jan–Dec (15 months) Member joins Nov → Membership spans Nov–Dec + Jan–Dec (14 months) Member joins Dec → Membership spans Dec + Jan–Dec (13 months) → Auto-generated $0 invoice for Jan 1 (following year)

Invoice Generation: When 15-for-12 is enabled and a member joins in Oct/Nov/Dec, the system:

  • Creates the initial paid invoice for the shortened period (Oct-Dec)
  • Auto-generates a $0 invoice dated Jan 1 to "extend" the membership through Dec 31
  • Sets renewal date to Dec 31 (instead of Oct/Nov/Dec of following year)

Chapter Toggle: Chapters can enable/disable 15-for-12. When disabled, members get standard 12-month invoices regardless of join month.

QA Testing Edge Challenge: Test $0 invoice generation and renewal date accuracy. If a member joins Nov 15, is the renewal date Dec 31 of the following year? Is the $0 invoice visible in reports?
Find-a-Contractor: Directory Sync

Find-a-Contractor syncs data from FindContractors.com into AMS company profiles. This is a one-way, outbound sync.

Data Flow:

FindContractors.com (source of truth) → Webhook/scheduled job → AMS Company record (updated fields: phone, website, services, etc.) → Portal member profile (if company is public-facing)

Data Mapped: Phone number, website, service categories, availability, coverage area, etc. are updated in the AMS company record.

Sync Cadence: Typically hourly or daily (depends on chapter configuration).

QA Testing Edge Challenge: Test sync idempotence. If the same data syncs twice, do we get duplicate records or updates? What if a company deletes their FindContractors profile? Is the AMS record cleared?

Glossary

Key terms and definitions used throughout Programs & Services testing and operations.

AQC

Accredited Quality Contractor — annual national certification recognizing contractors who meet quality standards. Awarded by National, synced locally.

STEP

Safety Training Evaluation Process — national safety certification. Companies track level (Bronze/Silver/Gold/Platinum/Diamond), submission status, and verified dates.

Beam Club

Points-based recognition program. Sponsors earn points annually; companies reach milestone levels (Beam Club, Merit, Merit Plus, Presidential, Hall of Fame, Chair).

Beam Club Levels

Six hard-coded award tiers: Beam Club (5 pts), Merit (10), Merit Plus (15), Presidential (25), Hall of Fame (50), Chair (100).

Sponsor

Individual employee designated to earn Beam Club points for their company. Company can have up to 2 sponsors.

Point Accrual

Annual addition of Beam Club points to a sponsor when company is active and has paid invoice. 1 sponsor = 1.0 pt; 2 sponsors = 0.5 pts each.

Prior Points

Historical Beam Club points added manually (by chapter admin) for sponsors or years not captured by annual accrual logic.

Fulfillment Status

Beam Club T-shirt award status: NULL (not ordered), Ordered, or Fulfilled.

Start-Up Contractor

Discounted dues structure for new contractors in Year 1 & 2 (and Year 3 hybrid if joined Feb-Dec). Being phased out.

15-for-12

Seasonal join offer: Oct/Nov/Dec joiners get 15/14/13 months for the price of 12. Auto-generates $0 invoice to shift renewal date.

Prorate

Adjust invoice amount based on join date within a billing period (e.g., join mid-month, prorate to day-of-month).

Affinity Discount

Discount program administered through affiliated organizations (partners, sponsors). Synced to AMS company records.

Find-a-Contractor

Directory platform (FindContractors.com) that syncs company profile data into AMS for public-facing member directories.

National SQL Sync

Bulk data import from National systems (AQC, STEP) into local AMS. Typically one-way, read-only locally.

Webhook

HTTP callback that notifies AMS of data changes at National (e.g., new AQC accreditation, STEP level update).

Badge

Visual indicator on member portal (AQC accreditation, STEP level, Beam Club level) signifying achievement or certification status.

Test Strategy

Comprehensive testing approach across all sub-programs, National syncs, and reporting features.

🧪Multi-Program Coverage Philosophy

Programs & Services testing spans seven independent sub-programs, each with unique data flows, UI surfaces, and business logic. Rather than testing each in isolation, effective P&S testing must:

  • Cover each program's happy path (basic CRUD, state transitions)
  • Test National sync reliability (data arrival, conflict resolution, retry logic)
  • Validate reporting exports (accuracy, performance, filtering)
  • Check billing impact (invoice generation, discount application)
  • Verify portal vs admin consistency
National Sync Testing (AQC, STEP)

Test Objectives:

  • Verify webhook/API receives National data correctly
  • Check data mapping (National field → Local field)
  • Validate read-only flag prevents local edits
  • Test sync conflict resolution (e.g., local record already exists, do we overwrite?)
  • Check retry logic on sync failure
  • Validate badge display after sync

Test Data Prep:

  • Stage test data in National system (or use mock webhook)
  • Create corresponding local company/member records
  • Trigger sync and verify local DB updates
  • Check portal reflects updated badge/status
Test Case Idea Scenario: Company has stale AQC data (2024). National sends update (2025 AQC awarded). Verify badge updates on portal and old badge disappears.
Portal vs Admin UI Testing

P&S features have dual interfaces: member-facing portal and chapter admin. Testing must cover both.

Portal (Member View):

  • Badge display (AQC, STEP, Beam Club level)
  • Read-only program status
  • Sponsor name (if Beam Club member)
  • Achievement history (e.g., "Reached Merit on Jun 2024")

Admin (Chapter Ops):

  • Manage Beam Club sponsors
  • Award T-shirts / update Fulfillment Status
  • Add prior points
  • Toggle Start-Up Contractor and 15-for-12 settings
  • Generate exports (STEP, Affinity Discount)

Consistency Checks: If admin updates Beam Club sponsor, does portal show new sponsor name immediately? Do data filters on admin export match the data shown on portal?

Reporting & Export Testing

Programs & Services generates multiple export types. Each export must be tested for accuracy, performance, and filtering.

Export Types:

  • STEP Export (with STEP): All members with STEP certification; includes level, year, status
  • No STEP Export: All members without STEP data
  • Affinity Discount Report: Members enrolled in affinity programs
  • Beam Club Report: Sponsors, points, levels, fulfillment status
  • Start-Up Contractor List: Members in discount period, discount rate applied

Test Cases:

  • Export with 5000+ records — does it timeout?
  • Filter by year/level/status — are filters applied correctly?
  • File format validation (CSV headers, escaping, encoding)
  • Timestamp accuracy (when was export generated?)
  • Download integrity (no truncation, all rows included)
Performance Edge Challenge: Bulk export performance. A large chapter (10k+ members) running STEP export should complete in < 30 sec. Test with production-like data volume.
Data Quality & Validation Testing

Field-Level Validation:

  • T-shirt size field (Beam Club) — only valid sizes accepted
  • Date fields (Submitted, Verified) — timezone handling, null checks
  • Level field (STEP, Beam Club) — only pre-defined levels allowed

State Consistency:

  • If Fulfillment Status = "Fulfilled," do we prevent re-ordering?
  • If sponsor is archived, can we still view historical points?
  • If company is inactive, can new Beam Club points accrue? (Should not)

Type Disc (Data Inconsistency) Tracking: STEP records can have Type Disc = STEP_inconsistent_with_dues. Test that this field is populated when STEP data conflicts with dues membership status.

Business Rules & Gotchas

Critical business logic, edge cases, and common testing mistakes for each sub-program.

AQC: Read-Only, Yearly, Badge Logic Critical

Rule 1: Read-Only Locally AQC data is owned by National. Local chapters cannot edit or create AQC records. If a chapter tries to manually update AQC status, the system should reject it.

Rule 2: Yearly Accreditation AQC is awarded for a calendar year (Jan 1 - Dec 31). On Jan 2 of the following year, if the company is not re-awarded, the badge disappears from the portal.

Rule 3: Badge Display Badge shows only for the current calendar year. If company was AQC in 2024 but not 2025, the 2024 badge should not display in 2025.

Rule 4: "No AQC History" Message If a company has never been AQC, or is not AQC in the current year, the portal shows "No AQC history" with a link to apply (if applicable).

Rule 5: Apply Link The "Apply for AQC" link routes to National's application system (external redirect).

Common Mistake: Testing AQC badge without verifying the calendar year logic. A badge displayed on Jan 2 for a 2024 accreditation is a bug if the company was not re-awarded for 2025.
STEP: Eligibility, Bulk Sync, Export Filtering Critical

Rule 1: Associate Member Eligibility Only active individual members can earn STEP levels. Category 1 associates (e.g., supplier members) are NOT eligible, even if they have STEP records from National. Test that a Category 1 member does not show a STEP badge.

Rule 2: 5 Data Points Per Year Each STEP record contains exactly: Year, Level, Date Submitted, Status (Submitted/Verified/Rejected), Date Verified. If a field is missing, the record is incomplete.

Rule 3: Badge = Highest Verified Level If a member has STEP Gold in 2023 (verified) and STEP Silver in 2024 (submitted, not verified), the badge shows Gold (highest verified level across all years).

Rule 4: Type Disc Tracking When STEP data is inconsistent with dues membership status (e.g., member has STEP but is inactive), set Type Disc = STEP_inconsistent_with_dues.

Rule 5: Export Filtering "STEP Export" shows members with any STEP record. "No STEP Export" shows members with no STEP history. A member with one rejected record still counts as "has STEP" for export purposes.

Common Mistake: Assuming a rejected STEP record means the member does not have STEP. The export should still include this member in the "STEP Export."
Beam Club: Points Accrual, Sponsor Rules, Archived Sponsors CriticalComplex

Rule 1: Max 2 Sponsors Per Company A company can designate up to 2 sponsors. Admin UI prevents adding a 3rd. Attempting to do so should fail with a validation error.

Rule 2: Point Accrual Math Annual accrual happens when all conditions are met:

  • Company is active
  • Company has a paid invoice (not pending, not failed)
  • Sponsor is designated (not undesignated/archived)
  • If 1 sponsor: 1.0 point; if 2 sponsors: 0.5 each

Rule 3: Points Are Permanent Once accrued, points never decrease. Even if a sponsor is undesignated or a company becomes inactive, points from prior years remain.

Rule 4: Award Levels (Hard-Coded) Thresholds are: 5, 10, 15, 25, 50, 100 points. When sponsor's points cross a threshold, they are awarded the level. If a sponsor has 12 points, they reach Merit (10) but not Merit Plus (15).

Rule 5: Sponsor Eligibility for Level Award When a sponsor reaches a new level, they must be an active individual at an active company at that moment. If the sponsor is archived before reaching the threshold, the level is not awarded retroactively.

Rule 6: Archived Sponsors Retain Points Archiving a sponsor does not erase their points. If a sponsor reaches Merit then gets archived, their 10 points persist. They do not accrue additional points (because they're archived), but prior points are not lost.

Rule 7: Prior Points Chapter admins can manually add points to a sponsor for historical years or special recognition. This bypasses the accrual logic and directly updates the points total.

Common Mistake: Assuming points reset at year-end or when a sponsor is undesignated. Points are permanent. Undesignated sponsors stop accruing future points but keep existing ones.
Start-Up Contractor: Year Tracking, Hybrid Rate, Toggle DeprecatedTricky

Rule 1: Year Identification System tracks which year a Start-Up Contractor member is in based on join date. Year 1 = join year. Year 2 = year after join. Year 3 = second year after join.

Rule 2: Year 1 & 2 Rates If member is in Year 1 or Year 2 (as of invoice date), apply the Start-Up Contractor discount rate (not the full rate).

Rule 3: Year 3 Hybrid Logic In Year 3, the discount depends on join month:

  • If joined Jan: Full rate (no discount)
  • If joined Feb-Dec: Hybrid rate (discounted, but not as much as Year 1/2)

Rule 4: Chapter Toggle Chapters can enable/disable Start-Up Contractor. When disabled, all members (including existing Start-Up Contractor members) are invoiced at full rate going forward.

Rule 5: Retroactive vs Prospective Disabling the toggle affects future invoices, not past ones. A member invoiced at discount in Year 2 will not be retroactively billed at full rate.

Common Mistake: Confusing Year 3 hybrid logic. If a member joined Feb 1, Year 3 is the second calendar year after Feb 1. The hybrid rate applies only if the invoice date is in Year 3, not every time the member is invoiced after 2 years.
15-for-12: Join Month Math, $0 Invoice, Renewal Shift Critical

Rule 1: Eligibility by Join Month 15-for-12 applies only to members who join in Oct, Nov, or Dec.

Rule 2: Membership Length

  • Join Oct: 15 months of membership (Oct + 14 months)
  • Join Nov: 14 months of membership (Nov + 13 months)
  • Join Dec: 13 months of membership (Dec + 12 months)

Rule 3: Price Calculation Price is for 12 months, regardless of join month. So a Oct joiner pays 12-month price for 15 months of coverage.

Rule 4: Auto-$0 Invoice After the initial paid invoice (for Oct-Dec), the system auto-generates a $0 invoice dated Jan 1 (following year). This extends the membership through Dec 31.

Rule 5: Renewal Date Shift The member's renewal date becomes Dec 31 (not Oct/Nov/Dec of the following year). This ensures consistent Dec-end renewals across the chapter.

Rule 6: Chapter Toggle Chapters can enable/disable 15-for-12. When disabled, Oct/Nov/Dec joiners get standard 12-month invoices.

Common Mistake: Forgetting the $0 invoice. A member who joins Nov should have two invoices: one paid (Nov-Dec) and one $0 (Jan 1). Reports that only show paid invoices will miss the $0 invoice and report incorrect renewal dates.
Affinity Discount & Find-a-Contractor: Sync & Mapping

Affinity Discount Rule 1: Enrollment Members enroll in affinity programs (e.g., "Partner XYZ Discount"). Enrollment status is synced to the AMS from the partner system.

Affinity Discount Rule 2: Discount Application When a member with active affinity enrollment pays a renewal invoice, the discount is applied (if enabled by the chapter).

Find-a-Contractor Rule 1: One-Way Sync Data flows from FindContractors.com → AMS. Local edits to company profile may be overwritten on next sync.

Find-a-Contractor Rule 2: Mapped Fields Only certain fields sync: phone, website, service categories, availability. Other fields (address, contact name) may not sync.

Find-a-Contractor Rule 3: Idempotence Multiple syncs of the same data should not create duplicates or corrupted records. If the same company syncs twice, update the existing record, don't create a new one.

Scenario Thinking

Complex, multi-step scenarios that test interactions across programs and edge cases.

Scenario 1: Beam Club Sponsor Reassignment with Archived Points

Setup: ABC Company has Sponsor A (10 points, at Merit level). Sponsor A leaves the company.

Action: Chapter admin undesignates Sponsor A and designates Sponsor B (0 points initially).

Expected Outcomes:

  • Sponsor A's 10 points are archived (retained, but not shown as "current")
  • Sponsor B starts accruing from 0 next year
  • Report shows Sponsor A's prior points separately (if "include history" option is enabled)
  • Portal shows new sponsor name (Sponsor B), not Sponsor A

Testing Edge: What if Sponsor A's email is still in the system? Does the badge show under their old account? Does portal history show both sponsors?

Scenario 2: STEP Company with Multiple Years of Data

Setup: Company has STEP records for 2022, 2023, 2024:

  • 2022: Silver (Verified)
  • 2023: Gold (Verified)
  • 2024: Platinum (Submitted, awaiting verification)

Expected Outcomes:

  • Badge shows Gold (highest verified level)
  • Export includes all three years of data
  • Member can see achievement history on portal
  • If 2024 Platinum is rejected: badge still shows Gold; 2024 record marked as rejected

Testing Edge: If National updates the 2023 record from "Verified" to "Rejected," does the badge re-calculate to Silver? Do exports update correctly?

Scenario 3: Start-Up Contractor Year 3 Hybrid Rate Calculation

Setup: Member joins Feb 1, 2023 (Year 1). Chapter has Start-Up Contractor enabled.

Invoicing Timeline:

  • Feb 1, 2023 - Jan 31, 2024: Year 1 rate (50% of full)
  • Feb 1, 2024 - Jan 31, 2025: Year 2 rate (75% of full)
  • Feb 1, 2025 - Jan 31, 2026: Year 3 hybrid rate (because joined Feb, not Jan)

Expected Outcomes:

  • Invoice dated Feb 1, 2025 shows hybrid rate, not full rate
  • If chapter disables Start-Up Contractor on Feb 15, 2025, the Feb 1 invoice already processed at hybrid. Future invoices (Mar 1, Apr 1) are at full rate.

Testing Edge: What if a member joins Feb 1, 2023, then is archived for 1 month, then reactivated? Does the system still recognize Year 3 status based on original join date?

Scenario 4: 15-for-12 New Member Joining in November

Setup: Member joins Nov 15, 2025. Chapter has 15-for-12 enabled. Standard membership term = 12 months (anniversary date = join date + 12 months).

Expected Invoices:

  • Invoice 1: Nov 15, 2025 - Dec 31, 2025 (prorated, paid)
  • Invoice 2: Jan 1, 2026 - Dec 31, 2026 ($0 invoice)

Expected Renewal Date: Dec 31, 2026 (not Nov 15, 2026)

Expected Outcomes:

  • Portal shows renewal date as Dec 31, 2026
  • Export reports include both invoices (one paid, one $0)
  • Total membership span: Nov 15, 2025 - Dec 31, 2026 (14 months)
  • If member is invoiced again on Jan 1, 2027, it should be at the full rate (new cycle)

Testing Edge: What if the member pays the Nov 15 invoice late (Dec 20)? Is the $0 invoice still auto-generated, or does the system check if the paid invoice was completed first?

Scenario 5: Beam Club Sponsor Reaching New Level After Point Accrual

Setup: Sponsor A at ABC Company has 12 points (Merit level). Company is active and has paid invoice.

Action: Annual point accrual runs. Sponsor A accrues 1 point (1 sponsor = 1.0 pt), reaching 13 points.

Expected Outcomes:

  • Sponsor A does not reach Merit Plus (15 points) yet
  • Badge still shows Merit
  • Points are recorded in DB as 13
  • If accrual happens again next year (+1 pt = 14 total), still Merit
  • If accrual happens again next year (+1 pt = 15 total), Sponsor A reaches Merit Plus

Testing Edge: What if prior points are added manually? If chapter admin adds 2 prior points to Sponsor A (bringing total to 14), and then the automatic accrual runs (+1), does the system reach 15 and award Merit Plus? Or does it skip the award because the admin-added points were manual?

Regression Checklists

Organized test checklists for each sub-program. Use these as starting points for regression test planning.

AQC Regression Checklist
  • National sync webhook received and processed
  • AQC badge displays on portal for current year accreditation
  • AQC badge does NOT display for prior year accreditation
  • "No AQC history" message displays when member is not accredited
  • "Apply for AQC" link routes to National application system
  • Chapter admin cannot manually edit AQC records (read-only enforcement)
  • On Jan 2 of new calendar year, badge disappears if no current-year accreditation
  • Sync conflict resolution: if local record exists, update vs. create logic is correct
  • Export includes AQC status field accurately
  • Portal search by "AQC" filter returns only accredited members
STEP Regression Checklist
  • National sync bulk import processes without timeout or data loss
  • Each STEP record contains all 5 data points (Year, Level, Date Submitted, Status, Date Verified)
  • STEP badge displays for active individual members only (not category 1 associates)
  • Badge shows highest verified level across all years
  • Badge does NOT show for submitted (unverified) levels if higher verified level exists
  • Type Disc field = STEP_inconsistent_with_dues is set correctly
  • "STEP Export" includes all members with any STEP record (including rejected)
  • "No STEP Export" includes members with zero STEP records
  • Export filtering by year/level/status produces correct results
  • Large export (5000+ records) completes in < 30 sec
  • Chapter admin cannot edit STEP records (read-only enforcement)
  • Stale STEP data (sync from prior year) is replaced by new sync, not duplicated
Beam Club Regression Checklist
  • Admin can designate up to 2 sponsors; 3rd sponsor rejected
  • Point accrual: company active + paid invoice + sponsor designated → 1.0 pt (1 sponsor) or 0.5 each (2 sponsors)
  • Point accrual: company inactive → no points accrued
  • Point accrual: no paid invoice → no points accrued
  • Points accrued are permanent (never decrease)
  • Sponsor undesignation prevents future accrual but retains past points
  • Sponsor archival prevents future accrual but retains past points
  • Award level thresholds: 5 (Beam Club), 10 (Merit), 15 (Merit Plus), 25 (Presidential), 50 (Hall of Fame), 100 (Chair)
  • Sponsor reaches level only if active individual at active company
  • Prior points can be added manually by admin (bypasses accrual logic)
  • T-shirt size field validation (only valid sizes accepted)
  • Fulfillment Status (NULL/Ordered/Fulfilled) can be updated by admin
  • Fulfillment Status = Fulfilled prevents re-ordering
  • Portal displays sponsor name, level, fulfillment status correctly
  • Admin report shows sponsors, points, levels, fulfillment status
  • Sponsor archival → prior points visible in "history" section if enabled
  • Export: Beam Club data includes sponsor name, points, current level
Start-Up Contractor Regression Checklist
  • Year 1 invoice applies Year 1 discount rate
  • Year 2 invoice applies Year 2 discount rate
  • Year 3 invoice applies full rate if joined in Jan
  • Year 3 invoice applies hybrid rate if joined Feb-Dec
  • Chapter can toggle Start-Up Contractor on/off
  • When disabled, future invoices use full rate (regardless of join year)
  • Toggle disabling is prospective (does not retroactively change past invoices)
  • Invoice line item shows applied rate/discount percentage
  • Report: Start-Up Contractor list shows members in discount period with rate applied
  • After 3 years (or Year 3 full rate if joined Jan), member no longer marked as Start-Up Contractor
15-for-12 Regression Checklist
  • Oct joiner: membership = Oct + 14 months (15 total); charged 12-month price
  • Nov joiner: membership = Nov + 13 months (14 total); charged 12-month price
  • Dec joiner: membership = Dec + 12 months (13 total); charged 12-month price
  • Auto-$0 invoice generated for Jan 1 (following year)
  • $0 invoice is visible in invoice list and export
  • Renewal date = Dec 31 (not Oct/Nov/Dec of following year)
  • Chapter can toggle 15-for-12 on/off
  • When disabled, Oct/Nov/Dec joiners get standard 12-month invoices
  • Toggle disabling is prospective (already-generated $0 invoices remain)
  • If first invoice is paid late (after Jan 1), is $0 invoice still generated?
  • Portal renewal date display is correct (Dec 31)
  • Export: 15-for-12 status and renewal date reported accurately
Affinity Discount Regression Checklist
  • Affinity enrollment syncs from partner system correctly
  • Discount is applied to renewal invoice if member has active affinity enrollment
  • If chapter disables affinity discount, future invoices no longer include discount
  • Report: affinity discount list shows members with active enrollment and discount applied
  • Affinity enrollment status is accurately reflected on member portal profile
Find-a-Contractor Regression Checklist
  • FindContractors.com data syncs into AMS company profile correctly
  • Mapped fields (phone, website, services, etc.) are updated in AMS
  • Sync is idempotent: same data synced twice does not create duplicates
  • If company deletes FindContractors profile, is AMS record cleared or marked inactive?
  • Sync failure does not corrupt local data or create orphaned records
  • Portal company directory reflects synced Find-a-Contractor data
  • Sync cadence (hourly/daily) is consistent and monitored

Environment & Data Setup

Test environment prerequisites, test data requirements, and setup procedures for each program.

National Sync Environments (AQC, STEP)

Prerequisites:

  • Test instance of National system (or mock webhook endpoint)
  • API credentials/credentials for National sync service
  • Test company/member records in both National and local AMS
  • Webhook receiver configured in local AMS to accept National events

Test Data Needs (AQC):

  • 5 test companies with AQC status "accredited" for current year
  • 3 test companies with AQC status "not accredited"
  • 2 test companies with prior-year AQC (to verify badge disappears on Jan 2 of new year)

Test Data Needs (STEP):

  • 5 companies with multi-year STEP records (2022, 2023, 2024)
  • Mixed STEP levels (Bronze, Silver, Gold, Platinum, Diamond)
  • Mixed status (Submitted, Verified, Rejected)
  • 3 companies with no STEP records (for "No STEP Export" testing)
  • 2 companies with category 1 associates (to verify ineligibility)
Beam Club Test Data Setup

Data Requirements:

  • 5 test companies, each with active status and paid invoice
  • 10 test individuals to assign as sponsors
  • Companies with 1 sponsor, 2 sponsors, and no sponsors
  • Sponsors at different point levels (5, 10, 15, 25, 50, 100 points)
  • Archived sponsors with prior points (to test retention)
  • Test records with manually added prior points
  • T-shirt fulfillment test data (NULL, Ordered, Fulfilled status)

Setup Procedure:

  1. Create 5 active companies, each with one paid invoice
  2. Assign sponsors and manually set points to specific thresholds
  3. For 2 of the companies, archive prior sponsors and designate new ones
  4. Set fulfillment statuses on some records to test state transitions
  5. Verify point accrual calculation on a test company (add it to invoice, verify accrual next run)
Start-Up Contractor Test Data Setup

Data Requirements:

  • Test company joined Jan 2024 (to test Year 1, 2, 3 progression)
  • Test company joined Feb 2024 (to test Year 3 hybrid rate)
  • Test company joined Dec 2024 (to test Year 3 full rate if joined Jan logic)
  • Chapter with Start-Up Contractor enabled
  • Chapter with Start-Up Contractor disabled

Setup Procedure:

  1. Create three test companies with specific join dates
  2. Generate invoices for each across multiple years
  3. Verify rates applied match expected Year 1, 2, or 3 rates
  4. Toggle program off and generate new invoices; verify full rate applied
15-for-12 Test Data Setup

Data Requirements:

  • Test member joins Oct 15 (to test 15-month span and $0 invoice)
  • Test member joins Nov 15 (to test 14-month span)
  • Test member joins Dec 15 (to test 13-month span)
  • Test member joins Jan 15 (to test NOT eligible for 15-for-12)
  • Chapter with 15-for-12 enabled
  • Chapter with 15-for-12 disabled

Setup Procedure:

  1. Create four test members with join dates in different months
  2. Generate invoices for each; verify paid invoice and $0 invoice created (for Oct/Nov/Dec joiners)
  3. Check renewal dates are Dec 31 for Oct/Nov/Dec joiners
  4. For Jan joiner, verify standard 12-month invoice (no $0 invoice)
  5. Disable 15-for-12 and verify new joiners get standard invoices
Find-a-Contractor Test Data & Sync Setup

Prerequisites:

  • Test account in FindContractors.com (or mock API endpoint)
  • Sync integration configured in AMS (URL, credentials, schedule)
  • Webhook receiver for sync notifications (optional)

Test Data Needs:

  • 5 test companies in FindContractors.com with profile data (phone, website, services)
  • Corresponding company records in AMS (name match for sync to work)
  • Companies with complete profiles and incomplete profiles (to test partial syncs)
  • One company with no AMS record (to test sync error handling)

Setup Procedure:

  1. Create test companies in both FindContractors.com and AMS
  2. Trigger initial sync and verify data flows correctly
  3. Update a company profile in FindContractors.com, trigger sync again
  4. Verify data is updated (not duplicated) in AMS
  5. Delete a company in FindContractors.com, trigger sync
  6. Verify AMS handles deletion (clear fields, mark inactive, etc.)
Chapter Configuration & Settings

Programs & Services settings are configured at the chapter level:

  • Start-Up Contractor: Enable/Disable (default varies by chapter)
  • 15-for-12: Enable/Disable (default varies by chapter)
  • Affinity Discount: Enable/Disable, partner selection
  • Beam Club: Enable/Disable (typically always enabled)
  • AQC/STEP Syncs: Sync frequency, data mapping
  • Find-a-Contractor: Sync frequency, field mapping

Test Requirement: Regression tests must cover both enabled and disabled states for each toggleable program. Verify settings persist across restarts and are applied correctly during invoice generation.